package com.xuecheng.content.convert;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.content.entity.CourseBase;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * <p>
 *      1,创建出一个接口出来，并在接口类上添加@Mapper注解
 *      2，根据MapStruct的api来创建出接口的实现类
 *      3，编写转换的方法
 *            传入参数：被转换的数据
 *            传出参数：转换为的数据
 *            PS：如果遇到了不一样的属性名称，需要使用MapStruct的注解来标识
 * </p>
 *
 * @Description:
 */
@Mapper
public interface CourseBaseConvert {

    //根据MapStruct的api来创建出接口的实现类
    CourseBaseConvert INSTANCE= Mappers.getMapper(CourseBaseConvert.class);

    //编写转换的方法
    @Mapping(source="id",target="courseBaseId")
    CourseBaseDTO entity2dto(CourseBase courseBase);

    /**
     * 当前MapStruct是有 对集合数据转换的功能的
     * 但是，集合的转换需要依赖单个数据转换的方法
     * @param courseBases
     * @return
     */
    List<CourseBaseDTO> entity2dto(List<CourseBase> courseBases);

    @Mappings({
            @Mapping(source = "courseBaseId",target = "id")
    })
    CourseBase dto2entity(CourseBaseDTO courseBase);

    @Mappings({

    })
    CourseBaseDTO vo2dto(CourseBaseVO courseBaseVO);
}
